home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / AGTCORE.JS_ / agtcore.js
Encoding:
Text File  |  2003-03-24  |  47.3 KB  |  1,991 lines

  1.  
  2.  
  3.  
  4.  
  5. var kdwAgentUserShowed = 2;
  6. var kdwAgentBalloonAutoPace = 8;                         
  7. var kdwAgentRequestInProgress = 4;
  8. var kdwAgentLeftButton = 1;
  9. var kdwAgentRequestFailed = 1;
  10.  
  11.  
  12.  
  13.  
  14. var kpszAgentFilename = window.external.API.get_SystemDirectory() + "\\oobe\\images\\qmark.acs";
  15. var kdwAgentWelcomeIntroFinished = 9999;
  16. var kdwAgentIdleLevel1Finished = 9995;
  17. var kdwAgentIdleStart = 9994;
  18. var kdwAgentNoop = 9993;
  19. var kdwAgentKeepLookingTimeout = 5000;
  20. var kdwAgentMoveSpeed = 400;
  21. var kdwAgentPageIdleTimeout1 = 10000;
  22. var kdwAgentPageIdleTimeout2 = 20000;
  23. var kpszISPSpecialCommand1 = "ISPCommand1";
  24. var kpszISPSpecialCommand2 = "ISPCommand2";
  25. var kpszISPSpecialCommand3 = "ISPCommand3";
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. var kiAgentLeftArmOffsetX = 67;
  37. var kiAgentRightArmOffsetX = 6;
  38. var kiAgentRightBodyOffsetX = 30;
  39. var kiAgentLeftArmOffsetY = 58;
  40. var kiAgentRightArmOffsetY = 58;
  41.  
  42.  
  43.  
  44.  
  45. var g_AgentDisabled; 
  46. var g_AgentCharacter = null;
  47. var g_strAgentCurrentPage = "";
  48. var g_strAgentLastPage = "";
  49. var g_bAgentFirstTime = false;
  50. var g_bAgentPreWelcome = false;
  51. var g_bAgentCongratulateOnFinish = true;
  52. var g_bAgentWelcomeIntroFinished = false;
  53. var g_bAgentRegister3ShortEmail = false;
  54. var g_bAgentRegister3LongEmail = false;
  55. var g_bAgentRegister3Privacy = false;
  56. var g_bAgentRegister3VisitState = false;
  57. var g_bAgentRegister3VisitProvince = false;
  58. var g_bAgentRegister3VisitCountry = false;
  59. var g_bAgentProductKeyCongratulate = false;
  60. var g_bAgentDoneHide = true;
  61. var g_bAgentFirstTimeClick = true;
  62. var g_bAgentIgnoreSelectClick = false;
  63. var g_bAgentIgnoreEvents = false;
  64. var g_bAgentInternalIgnoreEvents = false;
  65. var g_bAgentMenuUp = false;
  66. var g_strAgentLastFocusID = "";
  67. var g_AgentRequestHideImage = null;
  68. var g_AgentRequestShowAssistSpan = null;
  69. var g_AgentRequestShowPopup = null;
  70. var g_AgentRequestIdling = null;
  71. var g_AgentRequestLooking = null;
  72. var g_AgentRequestIgnoreResetIdle = null;
  73. var g_AgentKeepLookingTimer = null;
  74. var g_AgentLookBlinkTimer = null;
  75. var g_bAgentPlayLookReturn = false;
  76. var g_strAgentLookAnimation = "";
  77. var g_AgentLookElement = null;
  78. var g_AgentPageIdleTimer = null;
  79. var g_iAgentPageIdleLevel = 0;
  80. var g_bAgentShowSpecialISPCommands = false;
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. function Agent_ShowAssistantSpan()
  96. {
  97.     document.all("spnAssist").style.visibility = "visible";
  98.     document.all("AssistImg").style.visibility = "visible";
  99.     document.all("agentStr1").style.visibility = "visible";
  100.     document.all("agentStr2").style.visibility = "visible";
  101.     document.all("agentStr3").style.visibility = "visible";
  102. }
  103.  
  104. function Agent_HideAssistantSpan()
  105. {
  106.     document.all("spnAssist").style.visibility = "hidden";
  107.     document.all("AssistImg").style.visibility = "hidden";
  108.     document.all("agentStr1").style.visibility = "hidden";
  109.     document.all("agentStr2").style.visibility = "hidden";
  110.     document.all("agentStr3").style.visibility = "hidden";
  111. }
  112.  
  113. function Agent_ResetFocus() {
  114.  
  115.         
  116.         
  117.         g.focus();
  118.         
  119.         
  120.         
  121.         
  122.         
  123.                 
  124.         if (g_strAgentLastFocusID != "") {
  125.         
  126.                 try {
  127.                         
  128.                         Agent_InternalSetFocus(g.document.all(g_strAgentLastFocusID));
  129.  
  130.                 }
  131.                 catch (e) {
  132.                 }
  133.         }
  134.  
  135.         
  136.         
  137.         
  138.         
  139.         
  140.         g_AgentCharacter.Activate(2);   
  141. }
  142.  
  143. function Agent_IsGivingIdleInstructions() {
  144.  
  145.         if (g_AgentRequestIdling)
  146.                 return true;
  147.         else
  148.                 return false;
  149. }
  150.  
  151. var g_CallMusicOnce = false;
  152. function Agent_OnHide(characterID) {
  153.  
  154.         
  155.         
  156.         
  157.         g_bAgentMenuUp = false;
  158.         
  159.         
  160.         Agent_StopPageIdleTimer();
  161.         
  162.         
  163.         Agent_ShowAssistantSpan();
  164.  
  165.         
  166.         if (!g_CallMusicOnce)
  167.         {
  168.             g_CallMusicOnce = true;
  169.             window.parent.PlayBackgroundMusic();
  170.         }
  171.         
  172.         
  173.         
  174.         
  175.         Agent_ResetFocus();
  176. }
  177.  
  178.  
  179.  
  180.  
  181. function Agent_SetCharacterFilename(strFilename) {
  182.  
  183.         kpszAgentFilename = strFilename;
  184. }
  185.  
  186. function Agent_Play(strAnimation, bWantRequest) {
  187.  
  188.         
  189.         
  190.         
  191.         if (null == g_AgentCharacter)
  192.                 return null;
  193.                 
  194.         
  195.         
  196.         Agent_StopLooking();
  197.         
  198.         
  199.         
  200.         
  201.         
  202.         
  203.         
  204.         
  205.         
  206.         
  207.         
  208.         
  209.         
  210.         
  211.         
  212.         
  213.         if (Agent_Play.arguments.length != 2)
  214.                 bWantRequest = false;
  215.                 
  216.         if (bWantRequest) {
  217.                 return g_AgentCharacter.Play(strAnimation);
  218.         }
  219.         else {
  220.                 g_AgentCharacter.Play(strAnimation);
  221.                 return null;
  222.         }
  223. }
  224.  
  225. function Agent_MoveTo(x, y, speed, bWantRequest) {
  226.  
  227.  
  228.         
  229.         
  230.         
  231.         if (null == g_AgentCharacter)
  232.                 return null;
  233.                 
  234.         Agent_StopLooking();
  235.         
  236.         if (Agent_MoveTo.arguments.length != 4)
  237.                 bWantRequest = false;
  238.                 
  239.         if (bWantRequest) {
  240.                 return g_AgentCharacter.MoveTo(x, y, speed);
  241.         }
  242.         else {
  243.                 g_AgentCharacter.MoveTo(x, y, speed);
  244.                 return null;
  245.         }
  246. }
  247.  
  248. function Agent_Speak(text, bWantRequest) {
  249.  
  250.         
  251.         
  252.         
  253.         if (null == g_AgentCharacter)
  254.                 return null;
  255.                 
  256.         Agent_StopLooking();
  257.         
  258.         if (Agent_Speak.arguments.length != 2)
  259.                 bWantRequest = false;
  260.         
  261.         
  262.         
  263.         
  264.         
  265.         
  266.         if (IsFarEastLocale() && !IsKoreanLocale()) {
  267.         
  268.                 
  269.                 text = text + "\u200b \u200b \u200b \u200b \u200b "
  270.                 
  271.                 
  272.                 
  273.                 
  274.                 
  275.                 var i;
  276.                 var endloop = text.length/2;
  277.                 
  278.                 if (endloop > 50)
  279.                         endloop = 50;
  280.                         
  281.                 for (i=0; i < endloop; i++)
  282.                         text = text + "\u200b ";
  283.         
  284.         }
  285.         
  286.                 
  287.         if (bWantRequest) {
  288.                 return g_AgentCharacter.Speak(text);
  289.         }
  290.         else {
  291.                 g_AgentCharacter.Speak(text);
  292.                 return null;
  293.         }
  294. }
  295.  
  296. function Agent_Think(text, bWantRequest) {
  297.  
  298.         
  299.         
  300.         
  301.         if (null == g_AgentCharacter)
  302.                 return null;
  303.                 
  304.         Agent_StopLooking();
  305.         
  306.         if (Agent_Think.arguments.length != 2)
  307.                 bWantRequest = false;
  308.                 
  309.         if (bWantRequest) {
  310.                 return g_AgentCharacter.Think(text);
  311.         }
  312.         else {
  313.                 g_AgentCharacter.Think(text);
  314.                 return null;
  315.         }
  316. }
  317.  
  318. function Agent_Stop(request) {
  319.  
  320.         if (null == g_AgentCharacter)
  321.                 return;
  322.                 
  323.         if (Agent_IsLooking()) {
  324.  
  325.                 if (g_AgentLookBlinkTimer) {
  326.                         window.clearTimeout(g_AgentLookBlinkTimer);
  327.                         g_AgentLookBlinkTimer = null;
  328.                 }
  329.                 
  330.                 if (g_AgentKeepLookingTimer) {
  331.                         window.clearTimeout(g_AgentKeepLookingTimer);
  332.                         g_AgentKeepLookingTimer = null;
  333.                 }
  334.                 
  335.                 g_AgentRequestLooking = null;
  336.         }
  337.  
  338.         if (Agent_Stop.arguments.length == 1)
  339.                 g_AgentCharacter.Stop(request);
  340.         else
  341.                 g_AgentCharacter.Stop();
  342. }
  343.  
  344. function Agent_StopAll(types) {
  345.  
  346.         if (null == g_AgentCharacter)
  347.                 return;
  348.                 
  349.         if (Agent_IsLooking()) {
  350.  
  351.                 if (g_AgentLookBlinkTimer) {
  352.                         window.clearTimeout(g_AgentLookBlinkTimer);
  353.                         g_AgentLookBlinkTimer = null;
  354.                 }
  355.                 
  356.                 if (g_AgentKeepLookingTimer) {
  357.                         window.clearTimeout(g_AgentKeepLookingTimer);
  358.                         g_AgentKeepLookingTimer = null;
  359.                 }
  360.                 
  361.                 g_AgentRequestLooking = null;
  362.         }
  363.  
  364.         if (Agent_StopAll.arguments.length == 1)
  365.                 g_AgentCharacter.StopAll(types);
  366.         else
  367.                 g_AgentCharacter.StopAll();
  368. }
  369.         
  370. function Agent_MoveToElement(elem, side, speed, bWantRequest) {
  371.  
  372.         
  373.         
  374.         if (null == elem)
  375.                 return null;
  376.                 
  377.         
  378.         
  379.         
  380.         var curElem = elem;
  381.         var x = elem.document.parentWindow.screenLeft;
  382.         var y = elem.document.parentWindow.screenTop;
  383.         
  384.         while (curElem.tagName.toUpperCase() != "BODY") {
  385.         
  386.                 x += curElem.offsetLeft + curElem.clientLeft;
  387.                 y += curElem.offsetTop + curElem.clientTop;
  388.                 
  389.                 curElem = curElem.offsetParent; 
  390.         };
  391.  
  392.         
  393.         
  394.         
  395.         
  396.         switch (side) {
  397.                 case "Left":
  398.                         x = x - g_AgentCharacter.Width + kiAgentLeftArmOffsetX;
  399.                         y -= kiAgentLeftArmOffsetY;
  400.                         break;
  401.                         
  402.                 case "Right":
  403.                         x = x + elem.offsetWidth - kiAgentRightArmOffsetX;
  404.                         y -= kiAgentRightArmOffsetY;
  405.                         break;
  406.                         
  407.                 case "Top":
  408.                         y -= g_AgentCharacter.Height;
  409.                         break;
  410.                         
  411.                 case "Bottom":
  412.                         y += elem.offsetHeight;
  413.                         break;
  414.                         
  415.                 case "Center":
  416.                         x += ((elem.offsetWidth - g_AgentCharacter.Width) / 2);
  417.                         y += ((elem.offsetHeight - g_AgentCharacter.Height) / 2);
  418.                         break;
  419.                         
  420.                 case "LeftCenter":
  421.                         x = x - g_AgentCharacter.Width + kiAgentLeftArmOffsetX;
  422.                         y += ((elem.offsetHeight - g_AgentCharacter.Height) / 2);
  423.                         break;
  424.  
  425.                 case "RightCenter":
  426.                         x = x + elem.offsetWidth - kiAgentRightArmOffsetX;
  427.                         y += ((elem.offsetHeight - g_AgentCharacter.Height) / 2);
  428.                         break;
  429.  
  430.                 case "TopCenterWidth":
  431.                         x += ((elem.offsetWidth - g_AgentCharacter.Width) / 2);
  432.                         y -= g_AgentCharacter.Height;
  433.                         break;
  434.                                 
  435.                 case "TopLeft":
  436.                         x = x - g_AgentCharacter.Width + kiAgentLeftArmOffsetX;
  437.                         y -= g_AgentCharacter.Height;
  438.                         break;
  439.  
  440.                 case "TopRight":
  441.                         x = x + elem.offsetWidth - g_AgentCharacter.Width + kiAgentRightBodyOffsetX;
  442.                         y -= g_AgentCharacter.Height;
  443.                         break;
  444.                                                                 
  445.                 case "BottomRight":
  446.                         x = x + elem.offsetWidth - kiAgentRightArmOffsetX;
  447.                         y += elem.offsetHeight;
  448.                         break;
  449.                         
  450.                 case "BottomCenterWidthExactTop":
  451.                         x += ((elem.offsetWidth - g_AgentCharacter.Width) / 2);
  452.                         break;
  453.                                 
  454.                 case "BottomCenterWidthExactBottom":
  455.                         x += ((elem.offsetWidth - g_AgentCharacter.Width) / 2);
  456.                         y = y + elem.offsetHeight - g_AgentCharacter.Height;
  457.                         break;
  458.                                 
  459.                 case "BottomCenterWidth":
  460.                         x += ((elem.offsetWidth - g_AgentCharacter.Width) / 2);
  461.                         y += elem.offsetHeight;
  462.                         break;
  463.                                 
  464.                 case "Exact":
  465.                         break;
  466.         }
  467.                 
  468.         var cArgs = Agent_MoveToElement.arguments.length;
  469.         
  470.         if (cArgs < 4) {
  471.                 bWantRequest = false;
  472.                 if (cArgs < 3)
  473.                         speed = kdwAgentMoveSpeed;
  474.         }
  475.                 
  476.         return Agent_MoveTo(x, y, speed, bWantRequest); 
  477. }       
  478.  
  479. function Agent_GestureAtElement(elem, side, bWantRequest) {
  480.  
  481.  
  482.         
  483.         
  484.         Agent_MoveToElement(elem, side, kdwAgentMoveSpeed);
  485.         
  486.         
  487.         
  488.         switch (side) {
  489.                 case "Left":
  490.                 case "LeftCenter":
  491.                         return Agent_Play("PointLeft", bWantRequest);
  492.                         
  493.                 case "Right":
  494.                 case "RightCenter":
  495.                 case "BottomRight":
  496.                         return Agent_Play("PointRight", bWantRequest);
  497.                         
  498.                 case "Top":
  499.                 case "TopCenterWidth":
  500.                 case "TopLeft":
  501.                 case "TopRight":
  502.                         return Agent_Play("PointDown", bWantRequest);
  503.                         
  504.                 case "Bottom":
  505.                 case "BottomCenterWidthExactTop":
  506.                 case "BottomCenterWidthExactBottom":
  507.                 case "BottomCenterWidth":
  508.                         return Agent_Play("PointUp", bWantRequest);
  509.         }
  510.         
  511.         return null;
  512. }
  513.  
  514. function Agent_AddCommand(strName, strCommand) {
  515.  
  516.         if (!Agent_Init())
  517.                 return;
  518.                 
  519.         g_AgentCharacter.Commands.Add(strName, strCommand);
  520. }
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527. function QueueStartPageIdleTimer() {
  528.  
  529.         if (g_AgentRequestIgnoreResetIdle)
  530.                 g_AgentCharacter.Stop(g_AgentRequestIgnoreResetIdle);
  531.  
  532.         
  533.         
  534.         
  535.         
  536.         
  537.         
  538.         
  539.         
  540.                         
  541.         g_AgentRequestIgnoreResetIdle = g_AgentCharacter.Think("\\mrk=" + kdwAgentIdleStart + "\\");
  542. }
  543.  
  544. function Agent_IsLooking() {
  545.  
  546.         if (g_AgentRequestLooking)
  547.                 return true;
  548.         else
  549.                 return false;
  550. }
  551.  
  552. function Agent_GetLookAnimation(x) {
  553.  
  554.         if (g_AgentCharacter.Left > x)
  555.                 return "LookRight";
  556.         else
  557.                 return "LookLeft";
  558. }
  559.  
  560. function Agent_StartLookingAtElement(elem, animation) {
  561.  
  562.         
  563.         
  564.         
  565.         var curElem = elem;
  566.         var x = elem.document.parentWindow.screenLeft;
  567.         var y = elem.document.parentWindow.screenTop;
  568.  
  569.         while (curElem.tagName.toUpperCase() != "BODY") {
  570.         
  571.                 x += curElem.offsetLeft + curElem.clientLeft;
  572.                 y += curElem.offsetTop + curElem.clientTop;
  573.                 
  574.                 curElem = curElem.offsetParent; 
  575.         };
  576.  
  577.         
  578.         
  579.         if (animation != "")
  580.                 g_strAgentLookAnimation = animation;
  581.         else
  582.                 g_strAgentLookAnimation = Agent_GetLookAnimation(x);
  583.         
  584.         
  585.         
  586.         
  587.         if (!Agent_IsLooking() || (g_AgentLookElement != elem)) {
  588.         
  589.                 
  590.                 
  591.                 g_AgentCharacter.StopAll("play, speak");
  592.                 
  593.                 g_AgentRequestLooking = g_AgentCharacter.Play(g_strAgentLookAnimation);
  594.         }
  595.         
  596.         
  597.         
  598.         Agent_KeepLooking();
  599.         
  600.         g_AgentLookElement = elem;
  601. }
  602.  
  603. function Agent_KeepLooking() {
  604.  
  605.         
  606.         
  607.         if (g_AgentKeepLookingTimer)
  608.                 window.clearTimeout(g_AgentKeepLookingTimer);
  609.                 
  610.         g_AgentKeepLookingTimer = window.setTimeout("Agent_StopLooking()", kdwAgentKeepLookingTimeout);
  611. }
  612.  
  613. function Agent_StopLooking() {
  614.  
  615.         var animation;
  616.         
  617.         
  618.         
  619.         if (!Agent_IsLooking())
  620.                 return;
  621.  
  622.         if (g_bAgentMenuUp) {
  623.                 Agent_KeepLooking();
  624.                 return;
  625.         }
  626.         
  627.         
  628.         
  629.         if (g_AgentKeepLookingTimer) {
  630.                 window.clearTimeout(g_AgentKeepLookingTimer);
  631.                 g_AgentKeepLookingTimer = null;
  632.         }
  633.         
  634.         if (g_AgentLookBlinkTimer) {
  635.                 window.clearTimeout(g_AgentLookBlinkTimer);
  636.                 g_AgentLookBlinkTimer = null;
  637.         }
  638.         
  639.         
  640.         
  641.         if (g_bAgentPlayLookReturn)
  642.                 animation = g_strAgentLookAnimation + "Return";
  643.         else
  644.                 animation = "RestPose";
  645.  
  646.         if (!g_bAgentPlayLookReturn)
  647.                 g_AgentCharacter.StopAll();
  648.  
  649.         g_AgentRequestLooking = null;
  650.         g_AgentLookElement = null;
  651.         g_strAgentLookAnimation = "";
  652.         g_bAgentPlayLookReturn = false;
  653.  
  654.         g_AgentCharacter.Play(animation);
  655.  
  656.         
  657.         
  658.         
  659.         
  660.  
  661.         g_AgentCharacter.IdleOn = true;
  662. }
  663.  
  664. function Agent_OnLookBlinkTimer() {
  665.  
  666.         
  667.         
  668.         if (g_AgentLookBlinkTimer) {
  669.                 window.clearTimeout(g_AgentLookBlinkTimer);
  670.                 g_AgentLookBlinkTimer = null;
  671.         }
  672.  
  673.         
  674.  
  675.         if (null == g_AgentRequestLooking)
  676.                 return;
  677.  
  678.         
  679.  
  680.         g_AgentRequestLooking = g_AgentCharacter.Play(g_strAgentLookAnimation + "Blink");
  681.         
  682.         if (g_AgentRequestLooking.Status == kdwAgentRequestFailed)
  683.                 g_AgentCharacter.IdleOn = false;
  684.         else
  685.                 g_bAgentPlayLookReturn = false;
  686. }
  687.  
  688. function Agent_IsNextTabItem(elem1, elem2) {
  689.  
  690.         
  691.         
  692.         
  693.         
  694.         
  695.         
  696.         
  697.         if ((elem1.tabIndex > 0) && (elem2.tabIndex > 0))
  698.                 return (elem1.tabIndex == (elem2.tabIndex-1));
  699.         
  700.         
  701.         
  702.         
  703.         
  704.         
  705.         if (elem1.sourceIndex > elem2.sourceIndex)
  706.                 return false;
  707.         
  708.         var curIndex = elem1.sourceIndex + 1;
  709.         var curElem;
  710.         
  711.         while (curIndex < elem2.sourceIndex) {
  712.         
  713.                 curElem = g.document.all(curIndex);             
  714.                 
  715.                 ++curIndex;
  716.                 
  717.                 switch (curElem.tagName) {
  718.                         case "INPUT":
  719.                         case "SELECT":
  720.                                 break;
  721.                                 
  722.                         default:
  723.                                 continue;
  724.                 }
  725.                 
  726.                 
  727.                 
  728.                 if ((curElem.style.visibility == "hidden") ||
  729.                         (curElem.style.display == "none"))
  730.                         continue;
  731.                                 
  732.                 
  733.                 
  734.                 
  735.                 return false;
  736.         }
  737.         
  738.         return true;
  739. }
  740.  
  741. function Agent_MoveToPreWelcomePos() {
  742.  
  743.         var elem = g.document.all("AgentPos");
  744.         
  745.         
  746.         
  747.         if (null == elem)
  748.                 return;
  749.                 
  750.         
  751.         
  752.         
  753.         var curElem = elem;
  754.         var x = elem.document.parentWindow.screenLeft;
  755.         var y = elem.document.parentWindow.screenTop;
  756.         
  757.         while (curElem.tagName.toUpperCase() != "BODY") {
  758.         
  759.                 x += curElem.offsetLeft + curElem.clientLeft;
  760.                 y += curElem.offsetTop + curElem.clientTop;
  761.                 
  762.                 curElem = curElem.offsetParent; 
  763.         };
  764.  
  765.         
  766.         
  767.         
  768.         y = y - g_AgentCharacter.Height - 20;   
  769.                 
  770.         Agent_MoveTo(x, y, 0);  
  771. }       
  772.  
  773. function Agent_IsVisible() {
  774.  
  775.         if (null == g_AgentCharacter)
  776.                 return false;
  777.         else
  778.                 return g_AgentCharacter.Visible;
  779. }
  780.  
  781. function Agent_Show() 
  782. {
  783.         
  784.         
  785.         if (!Agent_Init())
  786.                 return false;
  787.                 
  788.         
  789.         
  790.         
  791.         if (!g_AgentCharacter.Visible) 
  792.         {  
  793.             Agent_HideAssistantSpan();
  794.             
  795.                 if (!g_bAgentPreWelcome)
  796.                         Agent_MoveToPreWelcomePos();
  797.                 else
  798.                         Agent_MoveToElement(document.all("AssistImg"), "BottomCenterWidthExactBottom", 0);
  799.                 
  800.                 if (!g_bAgentPreWelcome)
  801.                 {
  802.                     g_AgentCharacter.Show();
  803.                     g_AgentCharacter.Play("Welcome");
  804.                     return true;
  805.                 }
  806.                 else
  807.                 {
  808.                     g_AgentCharacter.Show();
  809.                     g_AgentCharacter.Play("WakeUp");
  810.                     return true;
  811.                 }
  812.                         
  813.                 if ("Finish" == g_strAgentCurrentPage)
  814.                     return true;
  815.         }
  816.         
  817.         return true;
  818. }
  819.  
  820. function Agent_OnPageIdle() {
  821.  
  822.         g_AgentPageIdleTimer = null;    
  823.                 
  824.         if (g_bAgentMenuUp) {
  825.                 Agent_ResetPageIdleTimer();
  826.                 return;
  827.         }
  828.         
  829.         if (g_strAgentCurrentPage == "")
  830.                 return;
  831.                 
  832.         if (g_iAgentPageIdleLevel == 0) {
  833.  
  834.                 try {
  835.                         eval("Agent_On" + g_strAgentCurrentPage + "Idle()");
  836.                 }
  837.                 catch(e) {
  838.                 }
  839.                 
  840.                 
  841.                 
  842.                 Agent_Think("\\mrk=" + kdwAgentIdleLevel1Finished + "\\");
  843.                 
  844.         }
  845.         else {
  846.         
  847.                 
  848.                 
  849.                 try {
  850.                         Agent_OnPageIdleLevel2();
  851.                 }
  852.                 catch (e) {
  853.                 }
  854.         }
  855.         
  856.         
  857.         
  858.         
  859.         g_AgentRequestIdling = Agent_Think("\\mrk=" + kdwAgentNoop + "\\", true);
  860. }
  861.  
  862. function Agent_StopPageIdleTimer() {
  863.  
  864.         if (g_AgentPageIdleTimer) {
  865.                 window.clearTimeout(g_AgentPageIdleTimer);
  866.                 g_AgentPageIdleTimer = null;
  867.         }
  868.         
  869.         g_iAgentPageIdleLevel = 0;
  870. }
  871.  
  872. function Agent_StartPageIdleTimer() {
  873.  
  874.         if (g_AgentPageIdleTimer)
  875.                 return;
  876.                 
  877.         if (g_iAgentPageIdleLevel == 0)
  878.                 g_AgentPageIdleTimer = window.setTimeout("Agent_OnPageIdle()", kdwAgentPageIdleTimeout1);
  879.         else
  880.                 g_AgentPageIdleTimer = window.setTimeout("Agent_OnPageIdle()", kdwAgentPageIdleTimeout2);
  881. }
  882.         
  883. function Agent_ResetPageIdleTimer() {
  884.  
  885.         if (g_AgentRequestIgnoreResetIdle)
  886.                 return;
  887.                 
  888.         if (Agent_IsGivingIdleInstructions())
  889.                 Agent_StopAll();
  890.                 
  891.         if (g_AgentPageIdleTimer)
  892.                 window.clearTimeout(g_AgentPageIdleTimer);
  893.         
  894.         g_iAgentPageIdleLevel = 0;
  895.         
  896.         g_AgentPageIdleTimer = window.setTimeout("Agent_OnPageIdle()", kdwAgentPageIdleTimeout1);
  897. }
  898.  
  899. function Agent_StopIgnoreEvents() {
  900.  
  901.         g_bAgentIgnoreEvents = false;
  902. }
  903.  
  904. function Agent_StopInternalIgnoreEvents() {
  905.  
  906.         g_bAgentInternalIgnoreEvents = false;
  907. }
  908.  
  909. function Agent_InternalIgnoreEvents(bIgnore) {
  910.  
  911.         if (bIgnore)
  912.                 g_bAgentInternalIgnoreEvents = bIgnore;
  913.         else
  914.                 window.setTimeout("Agent_StopInternalIgnoreEvents();", 500);
  915. }
  916.  
  917. function Agent_InternalSetFocus(elem) {
  918.  
  919.         var bPrevIgnore = g_bAgentInternalIgnoreEvents;
  920.         
  921.         Agent_InternalIgnoreEvents(true);
  922.         
  923.         elem.focus();
  924.         
  925.         g_AgentCharacter.Activate(2);
  926.         
  927.         if (bPrevIgnore == false)
  928.                 Agent_InternalIgnoreEvents(false);
  929. }
  930.  
  931. function Agent_DoPage() {
  932.  
  933.         
  934.  
  935.         if ("Finish" == g_strAgentCurrentPage) {
  936.         
  937.                 
  938.                 
  939.                 
  940.                 
  941.                 
  942.                 
  943.                 
  944.                 
  945.                 
  946.                 
  947.                 if (g_AgentCharacter) {
  948.                         if (g_AgentCharacter.Visible)
  949.                                 g_bAgentDoneHide = false;
  950.                         else if (!g_bAgentCongratulateOnFinish)
  951.                                 return; 
  952.                 }
  953.         }
  954.         
  955.         
  956.         
  957.         
  958.         
  959.         
  960.         if (!Agent_Show())
  961.                 return;
  962.  
  963.         
  964.         
  965.         Agent_StopPageIdleTimer();
  966.         
  967.         
  968.         
  969.         Agent_AddCommonCommands();
  970.         
  971.         
  972.         
  973.  
  974.         if ((g_strAgentCurrentPage != "Welcome") || g_bAgentPreWelcome)
  975.                 Agent_MoveToElement(document.all("AssistImg"), "BottomCenterWidthExactBottom", 0);
  976.  
  977.         
  978.                                 
  979.         var bTryOem = false;
  980.                         
  981.         if (g_strAgentCurrentPage == "") {
  982.                 bTryOem = true;
  983.         }
  984.         else {
  985.                         
  986.                 
  987.                                         
  988.                 try {                   
  989.                         eval("Agent_" + g_strAgentCurrentPage + "AddCommands();");                      
  990.                 }
  991.                 catch(e) {
  992.                         bTryOem = true;                 
  993.                 }
  994.         
  995.                 if (!bTryOem) { 
  996.                         try {
  997.                                 eval("Agent_" + g_strAgentCurrentPage + "Intro();");                    
  998.                         }
  999.                         catch(e) {
  1000.                         }
  1001.                 }
  1002.         }                                               
  1003.                                                 
  1004.         if (bTryOem) {
  1005.                         
  1006.                 
  1007.                 
  1008.                         
  1009.                 try {                   
  1010.                         g.Agent_UserRequestAssistant();
  1011.                 }
  1012.                 catch(e) {
  1013.                 }
  1014.                         
  1015.                 return;
  1016.         }
  1017.         
  1018.         
  1019.  
  1020.         QueueStartPageIdleTimer();              
  1021. }
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036. function Agent_OnRequestComplete(request) {
  1037.  
  1038.         if (g_AgentDisabled)
  1039.            return;
  1040.  
  1041.         if (request == g_AgentRequestLooking) {
  1042.         
  1043.                 
  1044.                 
  1045.                 
  1046.                 
  1047.                 
  1048.                 
  1049.                 
  1050.                 if (request.Status == 3) {
  1051.                         g_AgentRequestLooking = null;
  1052.                         return;
  1053.                 }
  1054.                 
  1055.                 g_bAgentPlayLookReturn = (request.Status == 0);
  1056.                 g_AgentLookBlinkTimer = window.setTimeout("Agent_OnLookBlinkTimer()", 1000);
  1057.                 
  1058.                 return;
  1059.         }
  1060.         else if (request == g_AgentRequestIdling) {
  1061.         
  1062.                 g_AgentRequestIdling = null;
  1063.         }
  1064.         else if (request == g_AgentRequestIgnoreResetIdle) {
  1065.         
  1066.                 g_AgentRequestIgnoreResetIdle = null;
  1067.         }
  1068.         else if (request == g_AgentRequestShowPopup) {
  1069.         
  1070.                 g_bAgentMenuUp = true;
  1071.                         
  1072.                 
  1073.         
  1074.                 if (g_strAgentCurrentPage != "") {
  1075.                 
  1076.                         try {
  1077.                                 eval("Agent_On" + g_strAgentCurrentPage + "PreDisplayMenu()");
  1078.                         }
  1079.                         catch(e) {
  1080.                         }
  1081.                 }
  1082.                         
  1083.                 g_AgentCharacter.ShowPopupMenu(g_AgentCharacter.Left + g_AgentCharacter.Width - kiAgentLeftArmOffsetX, g_AgentCharacter.Top);
  1084.                         
  1085.                 g_strAgentLookAnimation = "LookLeft";
  1086.                         
  1087.                 Agent_OnF1();
  1088.                 
  1089.                 g_AgentRequestLooking = g_AgentCharacter.Play(g_strAgentLookAnimation);
  1090.  
  1091.                 Agent_KeepLooking();
  1092.         }
  1093.         else if (request == g_AgentRequestShowAssistSpan) {
  1094.         
  1095.                 
  1096.                 
  1097.                 document.all("spnAssist").style.visibility = "visible";
  1098.                 
  1099.                 
  1100.                 
  1101.                 
  1102.                 
  1103.                 
  1104.                 if (request.Status == 0)
  1105.                     Agent_ShowAssistantSpan();
  1106.         }
  1107.         else if (request == g_AgentRequestHideImage) {
  1108.         
  1109.                 
  1110.                 
  1111.                 
  1112.                 
  1113.                 if (request.Status != 0)
  1114.                     Agent_HideAssistantSpan();
  1115.                         
  1116.                 g_AgentRequestHideImage = null;
  1117.         }
  1118.         else {
  1119.         
  1120.                 
  1121.                 
  1122.                 
  1123.                 
  1124.                 
  1125.                 
  1126.                 
  1127.                 
  1128.                 
  1129.                                 
  1130.                 try {
  1131.                 
  1132.                         eval("g.Agent_RequestComplete(request);");
  1133.                         
  1134.                 }
  1135.                 catch (e) {
  1136.                 }
  1137.         }       
  1138. }
  1139.  
  1140. function Agent_OnBookmark(id) {
  1141.  
  1142.         if (g_AgentDisabled)
  1143.            return;
  1144.  
  1145.         switch (id) {
  1146.                 case kdwAgentWelcomeIntroFinished:              
  1147.                         g_bAgentWelcomeIntroFinished = true;
  1148.                         break;
  1149.  
  1150.                 case kdwAgentIdleStart:
  1151.                         Agent_StartPageIdleTimer();
  1152.                         break;
  1153.                                                 
  1154.                 case kdwAgentIdleLevel1Finished:
  1155.                                         
  1156.                         g_iAgentPageIdleLevel++;
  1157.                 
  1158.                         Agent_StartPageIdleTimer();
  1159.                         
  1160.                         break;
  1161.                                                 
  1162.                 default:
  1163.                                                 
  1164.                         
  1165.                         
  1166.                         
  1167.                         try {
  1168.                 
  1169.                                 eval("g.Agent_Bookmark(id);");
  1170.                                 
  1171.                         }
  1172.                         catch (e) {
  1173.                         }
  1174.                         
  1175.                         break;
  1176.         }
  1177. }
  1178.  
  1179. function Agent_OnCommand(userInput) {
  1180.  
  1181.         if (g_AgentDisabled)
  1182.            return;
  1183.  
  1184.         g_bAgentMenuUp = false;
  1185.         
  1186.         
  1187.         
  1188.                         
  1189.         Agent_StopAll();
  1190.         Agent_Play("Acknowledge");
  1191.                         
  1192.         
  1193.                 
  1194.         Agent_ResetFocus();     
  1195.         
  1196.         
  1197.         
  1198.         Agent_StopPageIdleTimer();
  1199.         
  1200.         switch (userInput.Name) {
  1201.         
  1202.                 
  1203.                         
  1204.                 case "":
  1205.                 case "CloseMenu":
  1206.                 
  1207.                         
  1208.                         
  1209.                 
  1210.                         break;
  1211.                 
  1212.                 case kpszISPSpecialCommand1:
  1213.                         Agent_DoSpecialISPCommand1();
  1214.                         break;
  1215.                         
  1216.                 case kpszISPSpecialCommand2:
  1217.                         Agent_DoSpecialISPCommand2();
  1218.                         break;
  1219.                 
  1220.                 case kpszISPSpecialCommand3:
  1221.                         Agent_DoSpecialISPCommand3();           
  1222.                         break;
  1223.                                                                 
  1224.                 default:
  1225.                                 
  1226.                         
  1227.                         
  1228.                         
  1229.                                                                 
  1230.                         try {
  1231.                                 
  1232.                                 
  1233.                                 
  1234.                                 
  1235.                                 
  1236.                                 
  1237.                                 
  1238.                                 eval(userInput.Name + "();");
  1239.                                         
  1240.                                 break;  
  1241.                         }
  1242.                         catch(e) {
  1243.  
  1244.                                 
  1245.                                 
  1246.                                 
  1247.  
  1248.                                 try {
  1249.                         
  1250.                                         eval("g.Agent_Command(userInput.Name);");
  1251.                                                 
  1252.                                         return;
  1253.                                 }
  1254.                                 catch (e) {
  1255.                                 }
  1256.                         }                               
  1257.         }
  1258.  
  1259.         
  1260.         
  1261.         
  1262.         QueueStartPageIdleTimer();
  1263. }
  1264.  
  1265. function Agent_OnDragComplete(characterID, button, shift, x, y) {
  1266.  
  1267.         if (g_AgentDisabled)
  1268.            return;
  1269.  
  1270.         
  1271.         
  1272.         
  1273.         Agent_ResetFocus();     
  1274.         Agent_ResetPageIdleTimer();
  1275. }
  1276.  
  1277. function Agent_OnClick(characterID, button, shift, x, y) {
  1278.  
  1279.         if (g_AgentDisabled)
  1280.            return;
  1281.  
  1282.         
  1283.         
  1284.         Agent_StopAll();
  1285.         
  1286.         
  1287.         
  1288.         Agent_StopPageIdleTimer();
  1289.         
  1290.         
  1291.         
  1292.         if (g_strAgentCurrentPage != "") {
  1293.                 try {
  1294.                         eval("Agent_On" + g_strAgentCurrentPage + "PreDisplayMenu()");
  1295.                 }
  1296.                 catch(e) {
  1297.                 }
  1298.         }
  1299.                 
  1300.         
  1301.         
  1302.         
  1303.         
  1304.         
  1305.         if (g_bAgentFirstTimeClick) {
  1306.                 g_bAgentFirstTimeClick = false;
  1307.                 Agent_Play("Surprised");
  1308.         }
  1309.  
  1310.         Agent_Play("LookDown");
  1311.         Agent_Play("LookDownBlink");
  1312.         Agent_Play("LookDownReturn");
  1313.         Agent_Play("Blink");
  1314.  
  1315.         g_bAgentMenuUp = true;
  1316.  
  1317.         
  1318.         
  1319.         
  1320.         g_strAgentLookAnimation = "LookDown";
  1321.  
  1322.         if (button == kdwAgentLeftButton)       
  1323.                 g_AgentCharacter.ShowPopupMenu(x, y);
  1324.  
  1325.         
  1326.  
  1327.         QueueStartPageIdleTimer();              
  1328. }
  1329.  
  1330. function Agent_OnIdleStart(characterID) {
  1331.  
  1332.         if (g_AgentDisabled)
  1333.            return;
  1334.  
  1335.         if (g_bAgentMenuUp) {
  1336.                 g_AgentRequestLooking = g_AgentCharacter.Play(g_strAgentLookAnimation);
  1337.                 Agent_KeepLooking();
  1338.                 return;
  1339.         }
  1340. }
  1341.  
  1342. function Agent_OnIdleComplete(characterID) {
  1343.  
  1344.         if (g_AgentDisabled)
  1345.            return;
  1346.  
  1347. }
  1348.  
  1349.  
  1350.  
  1351. function Agent_Init() {
  1352.  
  1353.         if (g_AgentDisabled)
  1354.            return false;
  1355.  
  1356.         if (g_AgentCharacter)
  1357.                 return true;
  1358.                         
  1359.         
  1360.         
  1361.         
  1362.  
  1363.         document.body.insertAdjacentHTML("BeforeEnd", "<OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F width=0 height=0 id=Agent></OBJECT>");
  1364.  
  1365.         try {
  1366.         
  1367.                 Agent.RaiseRequestErrors = false;
  1368.         
  1369.                 Agent.Characters.Load("Character", kpszAgentFilename);
  1370.  
  1371.                 g_AgentCharacter = Agent.Characters.Character("Character");
  1372.         
  1373.                 
  1374.                         
  1375.                 
  1376.                 g_AgentCharacter.Balloon.Style = 0x2200007;
  1377.         
  1378.                 
  1379.                 
  1380.                 
  1381.                 
  1382.                 
  1383.                 
  1384.                 
  1385.                 
  1386.                 
  1387.                         
  1388.                 Agent.Characters.Load("AgentCmdFix", "AgentCmd.dat");
  1389.                         
  1390.         }
  1391.         catch(e) {
  1392.                 return false;
  1393.         }
  1394.         
  1395.         try {
  1396.         
  1397.                 
  1398.  
  1399.                 g_AgentCharacter.LanguageID = window.external.get_AppLANGID();
  1400.                 
  1401.         }
  1402.         catch(e) {
  1403.         }
  1404.         
  1405.         return true;
  1406. }
  1407.  
  1408. function Agent_Hide() 
  1409. {
  1410.  
  1411.         if (g_AgentDisabled)
  1412.            return;
  1413.  
  1414.         if (null == g_AgentCharacter)
  1415.                 return;
  1416.                 
  1417.         g_AgentCharacter.Hide(); 
  1418. }
  1419.  
  1420. function Agent_OnUserRequestAssistant() 
  1421. {
  1422.     if (g_AgentDisabled)
  1423.        return;
  1424.  
  1425.     if ((null == g_AgentCharacter) || (!g_AgentCharacter.Visible)) 
  1426.     {       
  1427.         
  1428.         
  1429.         
  1430.         
  1431.         
  1432.                                 
  1433.         if ("Finish" == g_strAgentCurrentPage) 
  1434.         {
  1435.                 g_bAgentCongratulateOnFinish = true;
  1436.                 g_bAgentDoneHide = false;
  1437.         }
  1438.                         
  1439.         Agent_DoPage();
  1440.         Agent_Play("Shimmer");
  1441.  
  1442.         
  1443.         
  1444.         if (window.parent.document.dir == "rtl")
  1445.         {
  1446.             Agent_MoveTo(screen.width - g_AgentCharacter.Width + kiAgentLeftArmOffsetX - 650, g_AgentCharacter.Top, 4);
  1447.         }
  1448.         else
  1449.         {
  1450.             Agent_MoveTo(screen.width - g_AgentCharacter.Width + kiAgentLeftArmOffsetX - 300, g_AgentCharacter.Top, 4);
  1451.         }
  1452.         
  1453.         g_AgentRequestShowPopup = Agent_Play("PointLeft", true);
  1454.     }
  1455.     else 
  1456.     {                
  1457.         Agent_StopAll();
  1458.         Agent_Play("Acknowledge");
  1459.           
  1460.         if (window.parent.document.dir == "rtl")
  1461.         {                       
  1462.             if ((g_AgentCharacter.Left + g_AgentCharacter.Width - kiAgentLeftArmOffsetX + 650) > screen.width)
  1463.             {
  1464.                 Agent_MoveTo(screen.width - g_AgentCharacter.Width + kiAgentLeftArmOffsetX - 650, g_AgentCharacter.Top, 4);
  1465.             }
  1466.         }
  1467.         else
  1468.         {                       
  1469.             if ((g_AgentCharacter.Left + g_AgentCharacter.Width - kiAgentLeftArmOffsetX + 300) > screen.width)
  1470.             {
  1471.                 Agent_MoveTo(screen.width - g_AgentCharacter.Width + kiAgentLeftArmOffsetX - 300, g_AgentCharacter.Top, 4);
  1472.             }        
  1473.         }
  1474.                         
  1475.         g_AgentRequestShowPopup = Agent_Play("PointLeft", true);
  1476.     } 
  1477.  
  1478. }
  1479.                 
  1480. function Agent_OnFocus(elem) {
  1481.  
  1482.         if (g_AgentDisabled)
  1483.            return;
  1484.  
  1485.         
  1486.         
  1487.         
  1488.         g_strAgentLastFocusID = elem.id;
  1489.         
  1490.         
  1491.         
  1492.         if (null == g_AgentCharacter)
  1493.                 return;
  1494.         
  1495.         if (g_bAgentIgnoreEvents || g_bAgentInternalIgnoreEvents)
  1496.                 return;
  1497.  
  1498.         
  1499.         
  1500.         Agent_StopPageIdleTimer();
  1501.         
  1502.         
  1503.         
  1504.         if (!g_AgentCharacter.Visible)
  1505.                 return;
  1506.         
  1507.         if (g_strAgentCurrentPage == "")
  1508.                 return;
  1509.                 
  1510.         
  1511.                 
  1512.         try {
  1513.         
  1514.                 eval("Agent_On" + g_strAgentCurrentPage + "GotFocus(elem);");
  1515.                 
  1516.         }
  1517.         catch(e) {
  1518.         }
  1519.  
  1520.         
  1521.  
  1522.         QueueStartPageIdleTimer();              
  1523. }
  1524.  
  1525. function Agent_OnKeyDown(elem) {
  1526.  
  1527.         if (g_AgentDisabled)
  1528.            return;
  1529.  
  1530.         if (g_bAgentIgnoreEvents)
  1531.                 return;
  1532.  
  1533.         
  1534.  
  1535.         if (g.event.keyCode == 112) {
  1536.         
  1537.                 Agent_OnUserRequestAssistant();
  1538.                 
  1539.                 return;
  1540.         }
  1541.         
  1542.         
  1543.         
  1544.         if (elem.id == "")
  1545.                 return;
  1546.                 
  1547.         
  1548.         
  1549.         if (null == g_AgentCharacter)
  1550.                 return;
  1551.         
  1552.         
  1553.                 
  1554.         Agent_StopPageIdleTimer();
  1555.  
  1556.         
  1557.         
  1558.         
  1559.         if (!g_AgentCharacter.Visible)
  1560.                 return;
  1561.                 
  1562.         
  1563.         
  1564.         
  1565.         
  1566.         if (g_strAgentCurrentPage == "")
  1567.                 return;
  1568.                 
  1569.         try {
  1570.         
  1571.                 eval("Agent_On" + g_strAgentCurrentPage + "KeyDown(elem, g.event.keyCode);");
  1572.                 
  1573.         }
  1574.         catch(e) {
  1575.         }
  1576.  
  1577.         
  1578.  
  1579.         QueueStartPageIdleTimer();              
  1580. }
  1581.  
  1582.  
  1583. function Agent_OnElementClick(elem) {
  1584.  
  1585.         if (g_AgentDisabled)
  1586.            return;
  1587.  
  1588.         if (g_bAgentIgnoreEvents)
  1589.                 return;
  1590.         
  1591.         
  1592.         
  1593.         if (elem.id == "")
  1594.                 return;
  1595.                 
  1596.         
  1597.         
  1598.         if (null == g_AgentCharacter)
  1599.                 return;
  1600.         
  1601.         
  1602.                 
  1603.         Agent_StopPageIdleTimer();
  1604.  
  1605.         
  1606.         
  1607.         
  1608.         if (!g_AgentCharacter.Visible)
  1609.                 return;
  1610.         
  1611.         if (g_strAgentCurrentPage == "")
  1612.                 return;
  1613.                 
  1614.         try {
  1615.  
  1616.                 eval("Agent_On" + g_strAgentCurrentPage + "ElementClick(elem);");
  1617.                 
  1618.         }
  1619.         catch(e) {
  1620.         }
  1621.  
  1622.         
  1623.  
  1624.         QueueStartPageIdleTimer();              
  1625. }
  1626.  
  1627. function Agent_OnSelectClick(elem) {
  1628.  
  1629.         if (g_AgentDisabled)
  1630.            return;
  1631.  
  1632.         if (null == g_AgentCharacter)
  1633.                 return;
  1634.         
  1635.         if (g_bAgentIgnoreEvents)
  1636.                 return;
  1637.  
  1638.         
  1639.                 
  1640.         Agent_StopPageIdleTimer();
  1641.  
  1642.         
  1643.         
  1644.         
  1645.         if (g_bAgentIgnoreSelectClick) {
  1646.                 g_bAgentIgnoreSelectClick = false;
  1647.                 return;
  1648.         }
  1649.         
  1650.         Agent_StopAll();
  1651.         
  1652.         
  1653.         
  1654.         if (g.document.dir == "rtl") {
  1655.                 
  1656.                 Agent_MoveToElement(elem, "Left", 0);   
  1657.                 Agent_StartLookingAtElement(elem, "LookLeft");
  1658.  
  1659.         }
  1660.         
  1661.         else {
  1662.         
  1663.                 Agent_MoveToElement(elem, "Right", 0);  
  1664.                 Agent_StartLookingAtElement(elem, "LookRight");
  1665.         }
  1666.         
  1667.     switch (elem.id) {
  1668.             case "selUSState":
  1669.                     g_bAgentRegister3VisitState = true;
  1670.             break;
  1671.  
  1672.         case "selCAProvince":
  1673.             g_bAgentRegister3VisitProvince = true;
  1674.             break;
  1675.  
  1676.         case "selCountry":
  1677.             g_bAgentRegister3VisitCountry = true;
  1678.             break;
  1679.    }
  1680.         
  1681.         
  1682.  
  1683.         QueueStartPageIdleTimer();              
  1684. }
  1685.  
  1686.  
  1687. function Agent_IgnoreEvents(bIgnore) {
  1688.         
  1689.         if (g_AgentDisabled)
  1690.            return;
  1691.  
  1692.         if (bIgnore)
  1693.                 g_bAgentIgnoreEvents = true;
  1694.         else
  1695.                 window.setTimeout("Agent_StopIgnoreEvents();", 500);
  1696. }
  1697.  
  1698. function Agent_OnSelectChange(elem) {
  1699.  
  1700.         if (g_AgentDisabled)
  1701.            return;
  1702.  
  1703.         if (null == g_AgentCharacter)
  1704.                 return;
  1705.  
  1706.         if (g_bAgentIgnoreEvents)
  1707.                 return;
  1708.  
  1709.         
  1710.                 
  1711.         Agent_StopPageIdleTimer();
  1712.  
  1713.         
  1714.         
  1715.         if (Agent_IsLooking())
  1716.                 Agent_StopLooking();
  1717.         else
  1718.                 Agent_StopAll();
  1719.         
  1720.         
  1721.         
  1722.         Agent_Play("Acknowledge");      
  1723.         
  1724.         
  1725.         
  1726.         
  1727.         g_bAgentIgnoreSelectClick = true;
  1728.  
  1729.         
  1730.  
  1731.         QueueStartPageIdleTimer();              
  1732. }
  1733.  
  1734. function Agent_Activate(strPage) {
  1735.         
  1736.         if (g_AgentDisabled)
  1737.            return;
  1738.  
  1739.         
  1740.         
  1741.         
  1742.         if (g_strAgentCurrentPage != "")
  1743.                 Agent_Deactivate();
  1744.                 
  1745.         
  1746.         
  1747.         g_strAgentCurrentPage = strPage;
  1748.         
  1749.         if (g_strAgentCurrentPage == "ISP")
  1750.                 g_bAgentShowSpecialISPCommands = false;
  1751.                 
  1752.         
  1753.         
  1754.         
  1755.         
  1756.         if ("Welcome" == g_strAgentCurrentPage) {
  1757.                 if (!g_bAgentPreWelcome) {
  1758.                         Agent_DoPage();
  1759.                         return;
  1760.                 }
  1761.         }
  1762.         
  1763.         
  1764.         
  1765.         
  1766.         
  1767.         
  1768.         
  1769.         if ((g_CurrentCKPT > CKPT_WELCOME) && !g_bAgentPreWelcome) {
  1770.                 g_bAgentPreWelcome = true;
  1771.                 Agent_ShowAssistantSpan();
  1772.                 return;
  1773.         }
  1774.         
  1775.         
  1776.         
  1777.         if (null == g_AgentCharacter)
  1778.                 return;
  1779.         
  1780.         
  1781.         
  1782.         
  1783.         
  1784.         
  1785.         if (!g_AgentCharacter.Visible)
  1786.                 return;
  1787.         
  1788.         
  1789.         
  1790.         
  1791.         
  1792.         
  1793.         if ("Register3" == g_strAgentCurrentPage)
  1794.                 Agent_IgnoreEvents(true);
  1795.         
  1796.         
  1797.         
  1798.         
  1799.         
  1800.         if ("" == g_strAgentLastPage) {
  1801.                         
  1802.                 if (Agent_IsLooking())
  1803.                         Agent_StopLooking();
  1804.                 else
  1805.                         Agent_StopAll();
  1806.         }
  1807.         
  1808.         
  1809.                 
  1810.         Agent_DoPage();
  1811. }
  1812.  
  1813. function Agent_Deactivate() 
  1814. {    
  1815.     if (g_AgentDisabled)
  1816.     {
  1817.         return;
  1818.     }
  1819.  
  1820.     g_strAgentLastPage = g_strAgentCurrentPage;
  1821.     g_strAgentCurrentPage = "";
  1822.  
  1823.     
  1824.         
  1825.     
  1826.     g_strAgentLastFocusID = "";
  1827.         
  1828.     
  1829.     Agent_StopPageIdleTimer();
  1830.         
  1831.     
  1832.     if (null == g_AgentCharacter)     
  1833.     {
  1834.         return;
  1835.     }
  1836.         
  1837.     
  1838.     Agent_AddCommonCommands();
  1839.         
  1840.     
  1841.     if (!g_AgentCharacter.Visible)
  1842.     {
  1843.         return;
  1844.     }
  1845.         
  1846.     if (g_AgentRequestHideImage) 
  1847.     {
  1848.         Agent_StopAll();
  1849.         g_AgentCharacter.Hide();
  1850.         g_bAgentCongratulateOnFinish = false;
  1851.         return;
  1852.     }
  1853.         
  1854.     
  1855.     
  1856.     
  1857.     
  1858.     
  1859.                 
  1860.     Agent_Stop();        
  1861.                 
  1862.     
  1863.     
  1864.     
  1865.  
  1866.     Agent_Play("RestPose");    
  1867.     g_AgentCharacter.Hide();
  1868. }
  1869.  
  1870. function Agent_TurnOnISPSpecialCommands() {
  1871.  
  1872.         if (g_AgentDisabled)
  1873.            return;
  1874.  
  1875.         g_bAgentShowSpecialISPCommands = true;
  1876.                 
  1877.         if (null == g_AgentCharacter)
  1878.                 return;
  1879.                 
  1880.         Agent_AddCommonCommands();
  1881. }
  1882.  
  1883. function Agent_TurnOffISPSpecialCommands() {
  1884.  
  1885.         if (g_AgentDisabled)
  1886.            return;
  1887.  
  1888.         g_bAgentShowSpecialISPCommands = false;
  1889.         
  1890.         if (null == g_AgentCharacter)
  1891.                 return;
  1892.                 
  1893.         try {
  1894.         g_AgentCharacter.Commands.Remove(kpszISPSpecialCommand1);
  1895.         g_AgentCharacter.Commands.Remove(kpszISPSpecialCommand2);
  1896.         g_AgentCharacter.Commands.Remove(kpszISPSpecialCommand3);
  1897.     }
  1898.     catch (e) {
  1899.         }
  1900. }
  1901.  
  1902. function Agent_OnFinish() {
  1903.  
  1904.         if (g_AgentDisabled)
  1905.            return;
  1906.  
  1907.         
  1908.         
  1909.         if (null == g_AgentCharacter)
  1910.                 return;
  1911.         
  1912.         Agent_StopAll();
  1913.         
  1914.         g_AgentCharacter.Hide(true);
  1915. }
  1916.  
  1917. function Agent_OnNavigate() {
  1918.  
  1919. }
  1920.  
  1921.  
  1922.  
  1923. function Agent_OnProductKeyKeyboardHelper(elem, keyCode) {
  1924.  
  1925.         if (g_AgentDisabled)
  1926.            return;
  1927.  
  1928.         
  1929.         
  1930.  
  1931.         if (g_bAgentIgnoreEvents)
  1932.                 return;
  1933.  
  1934.         
  1935.  
  1936.         if (elem.id == "")
  1937.                 return;
  1938.  
  1939.         
  1940.  
  1941.         if (null == g_AgentCharacter)
  1942.                 return;
  1943.  
  1944.         
  1945.  
  1946.         Agent_StopPageIdleTimer();
  1947.  
  1948.         
  1949.         
  1950.  
  1951.         if (!g_AgentCharacter.Visible)
  1952.                 return;
  1953.  
  1954.         Agent_OnProductKeyKeyDown(elem, keyCode);
  1955.  
  1956.         
  1957.  
  1958.         QueueStartPageIdleTimer();
  1959. }
  1960.  
  1961.  
  1962.  
  1963. function Agent_MouseOver(elem) {
  1964.  
  1965.         if (g_AgentDisabled)
  1966.            return;
  1967.  
  1968.         
  1969.  
  1970.         if (null == g_AgentCharacter)
  1971.                 return;
  1972.  
  1973.         if (g_bAgentIgnoreEvents || g_bAgentInternalIgnoreEvents)
  1974.                 return;
  1975.  
  1976.         
  1977.  
  1978.         if (!g_AgentCharacter.Visible)
  1979.                 return;
  1980.  
  1981.         if (g_strAgentCurrentPage == "")
  1982.                 return;
  1983.  
  1984.         Agent_StopAll();
  1985.  
  1986.         Agent_MoveToElement(elem, "TopCenterWidth", 0);
  1987.  
  1988.         Agent_StartLookingAtElement(elem, "Look" + "Down");
  1989.  
  1990. }
  1991.